/*
 * NodoBSharpFrontCoding.h
 *
 *  Created on: 02/10/2010
 *      Author: jijodra
 */

#ifndef NODOBSHARPFRONTCODING_H_
#define NODOBSHARPFRONTCODING_H_

#include <iostream>
#include <vector>
#include "../bsharptree/Puntero.h"
#include "../bsharptree/RegistroBSharpStringLong.h"
#include "../moduloAlmacenamiento/ManejadorAccesoDatos.h"
#include "../coding/FrontCoding.h"
#include "../coding/PalabraFrontCoding.h"

using namespace std;

class NodoBSharpFrontCoding {
public:
	static const short NODO_RAIZ;
	static const short NODO_HOJA;
	static const short NODO_INDICE;

	short tipo;
	int cantClavesUsadas;
	int cantRegistrosUsados;
	long numNodo;
	long numBloque;
	Puntero anterior;
	Puntero siguiente;
	vector<string> claves;
	vector<Puntero> punteros;
	vector<RegistroBSharpStringLong> registros;

	NodoBSharpFrontCoding();
	NodoBSharpFrontCoding(short tipo);
	long CalcularTamanio(NodoBSharpFrontCoding nodo);
	long CalcularTamanio(vector<NodoBSharpFrontCoding> nodos);
	void Salvar(char* fileName);
	void Obtener(char* fileName, Puntero puntero);
	void Limpiar();
	vector<string> encode(vector<string> vec);
	vector<string> decode(vector<string> vec);
	vector<RegistroBSharpStringLong> encodeRegistro(vector<RegistroBSharpStringLong> vec);
	vector<RegistroBSharpStringLong> decodeRegistro(vector<RegistroBSharpStringLong> vec);
	virtual ~NodoBSharpFrontCoding();
};

#endif /* NODOBSHARPFRONTCODING_H_ */
